// subpackModule/pages/physicalCondition/addPhysicalCondition/addPhysicalCondition.js

const app = getApp()
const networkUtil = app.globalData.networkUtil
const networkUtilV2 = app.globalData.networkUtilV2
const util = app.globalData.util
const logPrefix = "physicalCondition.addPhysicalCondition"


Page({

    /**
     * 页面的初始数据
     */
    data: {
        //员工信息
        idcardno: null,
        employeeno: null,
        employeename: null,
        companyno: null,
        companyname: null,

        checkTime: util.getCurrentDate(),
        temperature: null,

		//昨天是否外出
		outYesterday: null,
		outLocation: null,
		outLocation_array: ["超市或农贸市场","饭店","其他人员密集场所"],
		outLocation_index: null,
		outLocationDes: null,

		personOutTogether: null,
		outTransport: null,
		outTransport_array: ["汽车","公交车","电动自行车","其他"],
		outTransport_index: null,
		outTransportDes: null,
		//外出交通工具详细的标题
		outTransportDes_label: null,
		personalProtect: null,
		
		
		//信息是否有更新(0: 无更新; 1 有更新;)
        updateToday: null,
        //是否显示 "今天是否有更新"字段
        show_updateToday: true,

        //是否干咳
        dryCough: null,
        coughSeeDoctor: null,
        coughDiagResult: null,

        //是否胸闷
        chestTight: null,
        chestTightSeeDoctor: null,
        chestTightDiagResult: null,

        //是否有其他症状
        otherSymptom: null,
        specificDes: null,
        otherSymptomSeeDoctor: null,
        otherSymptomDiagResult: null,

        //身边是否有发烧者
        feverPersonAround: null,
        relationWithFeverPerson: null,
        //
        relationWithFeverPerson_array: ["家人", "同事", "其他"],
        relationWithFeverPerson_index: null,

        //身边是否有疑似肺炎患者
        pneumoniaAround: null,
        relationWithPneumonia: null,
        relationWithPneumoniaDes: null,
        //
        relationWithPneumonia_array: ["家人", "同事", "同小区", "其他"],
        relationWithPneumonia_index: null,

        //在本地或在外地
        whereNow: null,
        //location: null, //待删
        province: null,
        city: null,
        district: null,
        town: null,
        street: null,
        houseNum: null,

        planReturnTime: null,
        //
        whereNow_array: ["苏州", "盐城", "江苏省内", "江苏省外"],
        whereNow_index: null,

        //今天是否在岗 待删
        //dutyToday: null,


        //通信运营商
        operator: null,
        operator_array: ["移动", "联通", "电信"],
        operator_index: null,
        //手机号码
        phoneNumber: null,
		//
		phoneNumber_edit: true,
        //漫游地是否多个(0 一个; 1 多个;)
        roamingPlaceMore: null,
        personalRoamingPlace1: null,
        personalRoamingPlace2: null,
        personalRoamingPlace3: null,
        personalRoamingPlace4: null,
        personalRoamingPlace5: null,
        personalRoamingPlace6: null,
        //个人轨迹截屏
        photoBase64_track: null,

        //您是否已复工上班
        dutyToday: null,
        vehicleToWork: null,
        vehicleToWork_array: ["汽车", "公司班车", "公交车", "电动自行车", "步行", "其他"],
        vehicleToWork_index: null,

        //是否有提问需要反馈
        feedbackNeed: null, //(0 否; 1 是;)
        feedback: null,








    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
		//console.info(logPrefix+" 执行了onLoad()方法..")

      
        //1、获取员工信息
        let that = this
        that.getEmployeeInfo()

		//2、判断checkTime对应的这一天是否可以提交健康状况信息,并分析是否展示"今天是否有更新"选项。
		that.canSubmitByCheckTime_and_showUpdateToday()



      
        
    },

    sureCallBack(e) {
      console.log('aaa' + e.currentTarget.dataset.name);
      this.setData({
        [e.currentTarget.dataset.name]: e.detail.choosedData
      })
    },


	/**
	 * 判断checkTime对应的这一天是否可以提交健康状况信息,并分析是否展示"今天是否有更新"选项。
	 */
	canSubmitByCheckTime_and_showUpdateToday: function(){
		//1-1、判断checkTime对应的这一天是否可以提交健康状况信息
		let that=this
		that.canSubmitByCheckTime().then((res) => {
			//1-2、是否展示"今天是否有更新"选项。
			if (app.globalData.SUCCESS_STR == res) {
				let url = app.globalData.baseUrl + "/physicalCondition/showUpdateToday"
				let requestData = {
					checkTime: that.data.checkTime
				}
				networkUtil.request_get(url, requestData).then((res) => {
					let showUpdateToday = res.data.showUpdateToday
					//不展示"今天是否有更新"选项
					if (showUpdateToday == 0) {
						that.setData({
							updateToday: 1,
							show_updateToday: false
						})
					}
					//展示"今天是否有更新"选项
					if (showUpdateToday == 1) {
						that.setData({
							updateToday: null,
							show_updateToday: true
						})
					}
				}).catch((res) => {
					util.showToastWithMsg("请求出错!", res.message)
				})
			}
		})
	},


    /**
     * 日期选择事件的处理方法。
     * @param {*} event 
     */
    bindDateChange: function(event) {
        let that = this
        let name = event.currentTarget.dataset.name
        let value = event.detail.value
		
		switch(name){
			//打卡日期
			case "checkTime": {
				that.setData({
					"checkTime": value
				})
				//判断checkTime对应的这一天是否可以提交健康状况信息,并分析是否展示"今天是否有更新"选项。
				that.canSubmitByCheckTime_and_showUpdateToday()
				break
			}

			default: {
				that.setData({
					[name]: value
				})
				break
			}
		}
    },

    /**
     * 检查"体温"格式是否正确
     * @param {*} event 
     */
    checkTemperature: function(event) {
        let temperature = Number(event.detail.value)
        if (isNaN(temperature)) {
            util.showToast("体温格式错误")
            return
        }

        //若体温格式正确，检查其取值范围
        if (temperature < 35 || temperature > 42) {
            util.showToast("请输入正确的体温")
            return
        }

        this.setData({
            temperature: temperature
        })
    },

    /**
     * 单选按钮点击事件处理。
     * @param {*} event 
     */
    radioChange: function(event) {
        let that = this
        let name = event.currentTarget.dataset.name
        let value = event.detail.value

        that.setData({
            [name]: value
        })
    },

    /**
     * 失去焦点时触发事件的处理。
     * @param {*} event 
     */
    onBlur: function(event) {
        let that = this
        let name = event.currentTarget.dataset.name
        let value = event.detail.value

		that.setData({
			[name]: value
		})
    },

    /**
     * 普通picker的change事件的处理。
     * @param {*} event 
     */
    pickerChange: function(event) {
        let that = this
        let name = event.currentTarget.dataset.name
        let value = event.detail.value

        switch (name) {
            //与身边发烧者的关系
            case "relationWithFeverPerson":
                that.setData({
                    "relationWithFeverPerson": that.data.relationWithFeverPerson_array[value],
                    "relationWithFeverPerson_index": value
                })
                break

                //与身边疑似肺炎患者的关系
            case "relationWithPneumonia":
                that.setData({
                    "relationWithPneumonia": that.data.relationWithPneumonia_array[value],
                    "relationWithPneumonia_index": value
                })
                break

                //在本地或在外地
            case "whereNow":
                that.setData({
                    "whereNow": that.data.whereNow_array[value],
                    "whereNow_index": value
                })
                break

                //通信运营商
            case "operator":
                {
                    that.setData({
                        "operator": that.data.operator_array[value],
                        "operator_index": value
                    })
                    break
                }

                //上班交通工具
            case "vehicleToWork":
                {
                    that.setData({
                        "vehicleToWork": that.data.vehicleToWork_array[value],
                        "vehicleToWork_index": value
                    })
                    break
                }

            //外出地点
			case "outLocation": {
				that.setData({
					"outLocation": that.data.outLocation_array[value],
					"outLocation_index": value
				})
				break
			}
			
			//外出交通工具
			case "outTransport": {
				that.setData({
					"outTransport": that.data.outTransport_array[value],
					"outTransport_index": value
				})
				//根据选择的交通工具,展示对应的"交通工具详情的标题"
				switch (that.data.outTransport) {
					case "汽车": {
						that.setData({
							outTransportDes_label: "车牌号"
						})
						break
					}
					case "公交车": {
						that.setData({
							outTransportDes_label: "公交线路"
						})
						break
					}
					case "电动自行车": {
						that.setData({
							outTransportDes_label: "车牌号、车身颜色"
						})
						break
					}
					case "其他": {
						that.setData({
							outTransportDes_label: "交通工具详情"
						})
						break
					}
				}
				break
			}
        }
    },

    /**
     * 提交每日健康状况信息。
     */
    submitDayPhysicalCondition: function() {

        /**
         * 验证信息是否完整
         */
        let that = this

        //一次验证表单信息
        let isValid = that.validateLevel_1()
        if (isValid == false) {
            return
        }
        //二次验证表单信息
        isValid = that.validateLevel_2()
        if (isValid == false) {
            return
        }

        /**
         * 提交表单信息
         */
        let url = app.globalData.baseUrl + "/physicalCondition/addPhysicalCondition"
        let requestData = {
            ...that.data,
            photoBase64: that.data.photoBase64_track,
            photoBase64_track: null,
        }
        //console.info(logPrefix+" requestData",requestData)

        networkUtilV2.httpPost(url, requestData).then((res) => {
            /**
             * 若提交信息成功
             */
            console.info("提交每日健康状况信息成功!", res)
            util.showToast("提交成功!")
            //返回到列表页面
            let goBack = () => {
                wx.navigateBack({
                    delta: 1
                })
            }
            setTimeout(goBack, 1000)
        }).catch((res) => {
            /**
             * 若提交信息失败，打印失败信息。
             */
            console.error("提交健康状况信息出错!", res)
            util.showToastWithMsg("提交健康状况信息出错!", res.message)
        })
    },

    /**
     * 一次验证》验证表单信息是否完整。
     */
    validateLevel_1: function() {

        //身份证号等个人信息
        let that = this
        if (util.isEmpty(that.data.idcardno)) {
            util.showToast("请输入身份证号")
            return false
        }

		//昨天下班是否外出
		if(util.isEmpty(that.data.outYesterday)){
			util.showToast("请选择昨天下班或休息日是否外出")
			return false
		}

        //打卡日期等字段
        if (util.isEmpty(that.data.checkTime)) {
            util.showToast("请选择打卡日期")
            return false
        }
        if (util.isEmpty(that.data.temperature)) {
            util.showToast("请输入体温")
            return false
        }
        if (util.isEmpty(that.data.updateToday)) {
            util.showToast("请选择今天是否有更新")
            return false
        }
        //若选择 "今天没有更新"，直接返回true
        if (that.data.updateToday == 0) {
            return true
        }

        //干咳症状
        if (util.isEmpty(that.data.dryCough)) {
            util.showToast("请选择今天是否有干咳")
            return false
        }
        //胸闷
        if (util.isEmpty(that.data.chestTight)) {
            util.showToast("请选择今天是否有胸闷")
            return false
        }
        //其他症状
        if (util.isEmpty(that.data.otherSymptom)) {
            util.showToast("请选择是否有其他不舒服症状")
            return false
        }
        //身边是否有发热者
        if (util.isEmpty(that.data.feverPersonAround)) {
            util.showToast("请选择身边是否有发热者")
            return false
        }
        //身边是否有疑似肺炎患者
        if (util.isEmpty(that.data.pneumoniaAround)) {
            util.showToast("请选择身边是否有疑似肺炎患者")
            return false
        }
        //在本地或在外地
        if (util.isEmpty(that.data.whereNow)) {
            util.showToast("请选择在本地或在外地")
            return false
        }

        /*
        //今天是否在岗
        if (util.isEmpty(that.data.dutyToday)) {
        	util.showToast("请选择今天是否在岗")
        	return false
        }
        */

		//通信运营商
		if(util.isEmpty(that.data.operator)){
			util.showToast("请选择手机运营商")
			return false
		}
		if(util.isEmpty(that.data.phoneNumber)){
			util.showToast("请输入手机号码")
			return false
		}
		if(util.isEmpty(that.data.roamingPlaceMore)){
			util.showToast("请选择个人轨迹漫游地数量")
			return false
		}
		//上传个人轨迹截屏
		if(util.isEmpty(that.data.photoBase64_track)){
			util.showToast("请选择个人轨迹截屏")
			return false
		}

		//是否已复工上班
		if(util.isEmpty(that.data.dutyToday)){
			util.showToast("请选择是否已复工上班")
			return false
		}
		//是否有问题反馈
		if(util.isEmpty(that.data.feedbackNeed)){
			util.showToast("请选择是否有问题反馈")
			return false
		}

        //若表单信息完整
        return true
    },

    /**
     * 二次验证》验证表单信息是否完整。
     */
    validateLevel_2: function() {
		let that = this

		//若昨天下班外出
		if(that.data.outYesterday==1){
			//
			if(util.isEmpty(that.data.outLocation)){
				util.showToast("请选择外出地点")
				return false
			}
			if(util.isEmpty(that.data.outLocationDes)){
				util.showToast("请输入外出详细地址")
				return false
			}
			if(util.isEmpty(that.data.personOutTogether)){
				util.showToast("请输入外出随行人员")
				return false
			}
			if(util.isEmpty(that.data.outTransport)){
				util.showToast("请选择外出交通工具")
				return false
			}
			if(util.isEmpty(that.data.outTransportDes)){
				util.showToast("请输入外出交通工具详情")
				return false
			}
			if(util.isEmpty(that.data.personalProtect)){
				util.showToast("请输入个人防护措施")
				return false
			}
		}

        //以下信息今天有更新吗，若没有更新，直接返回true。
        if (that.data.updateToday == 0) {
            return true
        }

        //有干咳症状
        if (that.data.dryCough == 1) {
            //是否就诊
            if (util.isEmpty(that.data.coughSeeDoctor)) {
                util.showToast("请选择是否就诊")
                return false
            }

            //已就诊
            if (that.data.coughSeeDoctor == 1) {
                //就诊结果
                if (util.isEmpty(that.data.coughDiagResult)) {
                    util.showToast("请输入就诊结果")
                    return false
                }
            }
        }

        //有胸闷症状
        if (that.data.chestTight == 1) {
            //是否就诊
            if (util.isEmpty(that.data.chestTightSeeDoctor)) {
                util.showToast("请选择是否就诊")
                return false
            }
            //已就诊
            if (that.data.chestTightSeeDoctor == 1) {
                //就诊结果
                if (util.isEmpty(that.data.chestTightDiagResult)) {
                    util.showToast("请输入就诊结果")
                    return false
                }
            }
        }

        //有其他症状
        if (that.data.otherSymptom == 1) {
            //具体描述
            if (util.isEmpty(that.data.specificDes)) {
                util.showToast("请输入具体描述")
                return false
            }
            //是否就诊
            if (util.isEmpty(that.data.otherSymptomSeeDoctor)) {
                util.showToast("请选择是否就诊")
                return false
            }
            //已就诊
            if (that.data.otherSymptomSeeDoctor == 1) {
                //就诊结果
                if (util.isEmpty(that.data.otherSymptomDiagResult)) {
                    util.showToast("请输入就诊结果")
                    return false
                }
            }
        }

        //身边有发热者
        if (that.data.feverPersonAround == 1) {
            //与其关系
            if (util.isEmpty(that.data.relationWithFeverPerson)) {
                util.showToast("请选择与其关系")
                return false
            }
        }

        //身边有疑似肺炎患者
        if (that.data.pneumoniaAround == 1) {
            //与其关系
            if (util.isEmpty(that.data.relationWithPneumonia)) {
                util.showToast("请选择与其关系")
                return false
            }

            //选择"其他关系"
            if (that.data.relationWithPneumonia == "其他") {
                //其他关系详情
                if (util.isEmpty(that.data.relationWithPneumoniaDes)) {
                    util.showToast("请输入与其关系详情")
                    return false
                }
            }
        }

        //在"江苏省内"，或在"江苏省外"
        if (that.data.whereNow == "江苏省内" || that.data.whereNow == "江苏省外") {
            /*待删
            //当前所在城市
            if (util.isEmpty(that.data.location)) {
            	util.showToast("请输入当前所在城市")
            	return false
            }
            */
            if (util.isEmpty(that.data.province)) {
                util.showToast("请输入省份")
                return false
            }
            if (util.isEmpty(that.data.city)) {
                util.showToast("请输入城市")
                return false
            }
            if (util.isEmpty(that.data.district)) {
                util.showToast("请输入区(县)")
                return false
            }
            if (util.isEmpty(that.data.town)) {
                util.showToast("请输入乡镇")
                return false
            }
            if (util.isEmpty(that.data.street)) {
                util.isEmpty("请输入街道(村)")
                return false
            }
            if (util.isEmpty(that.data.houseNum)) {
                util.isEmpty("请输入门牌号")
                return false
            }

            //计划返回时间
            if (util.isEmpty(that.data.planReturnTime)) {
                util.showToast("请选择计划返回时间")
                return false
            }
        }

		//个人轨迹漫游地,选择了 "仅一个"
		if(that.data.roamingPlaceMore==0){
			if(util.isEmpty(that.data.personalRoamingPlace1)){
				util.showToast("请输入漫游地")
				return false
			}
		}
		//个人轨迹漫游地,选择了 "多个"
		if(that.data.roamingPlaceMore==1){
			if(util.isEmpty(that.data.personalRoamingPlace1)){
				util.showToast("请输入漫游地1")
				return false
			}
			if(util.isEmpty(that.data.personalRoamingPlace2)){
				util.showToast("请输入漫游地2")
				return false
			}
		}

		//已复工上班
		if(that.data.dutyToday==1){
			//上班的交通工具
			if(util.isEmpty(that.data.vehicleToWork)){
				util.showToast("请选择上班的交通工具")
				return false
			}
		}

		//有问题反馈
		if(that.data.feedbackNeed==1){
			//具体内容
			if(util.isEmpty(that.data.feedback)){
				util.showToast("请输入问题反馈")
				return false
			}
		}
		
        //若表单信息完整
        return true
    },

    /**
     * 获取员工信息
     */
    getEmployeeInfo: function() {

        //获取员工信息
        let that = this
        //console.log("wxUser",app.globalData.wxUser)
        let wxUser = app.globalData.wxUser

        that.setData({
            idcardno: wxUser.idcardno,
            employeeno: wxUser.employeeNo,
            employeename: wxUser.name
        })

		/**
		 * 1、根据公司编号获取公司名称
		 */
        let url = app.globalData.baseUrl + "/physicalCondition/getCompanynameByCompanyno"
        let requestData = {
            companyno: wxUser.companyno
        }
        networkUtil.request_get(url, requestData).then((res) => {
            //若已获取companyname
            that.setData({
                companyname: res.data
            })
        }).catch((res) => {
            console.error(logPrefix + " 获取公司名称,出错!", res)
        })

		/**
		 * 2、获取该员工的手机号码
		 */
		url = app.globalData.baseUrl +"/physicalCondition/getEmplPhoneNumByIdcardno"
		requestData={}
		networkUtil.request_get(url,requestData).then((res)=>{
			//若已获取到
			that.setData({
				phoneNumber: res.data.phoneNum,
				phoneNumber_edit: false
			})
		}).catch((res)=>{
			//若未获取到
			console.error(logPrefix +" getEmployeeInfo() 获取员工手机号码出错!",res)
			util.showToastWithMsg("获取员工手机号码出错!",res.message)
		})
    },

    /**
     * 判断checkTime对应的这一天是否可以提交健康状况信息。
     */
    canSubmitByCheckTime: function() {
        let that = this
        let url = app.globalData.baseUrl + "/physicalCondition/canSubmitByCheckTime"
        let requestData = {
            checkTime: that.data.checkTime
        }

        return networkUtil.request_get(url, requestData).then((res) => {
            let canSubmit = res.data.canSubmit
            let message = res.data.message

            //若不可提交健康状况信息
            if (canSubmit == 0) {
				util.showToast(message)
                //若checkTime为今天
                if (that.data.checkTime == util.getCurrentDate()) {
                    util.showToast("今天您已提交过健康打卡信息")
                }
                return app.globalData.ERROR_STR
            }
            return app.globalData.SUCCESS_STR
        }).catch((res) => {
            util.showToastWithMsg("请求出错!", res.message)
            return app.globalData.ERROR_STR
        })
    },


    /**
     * 上传个人轨迹截屏。
     */
    uploadFile_track: function() {
        //获取用户选择的图片
        let that = this
        wx.chooseImage({
            count: 1, // 默认9
            sizeType: ['compressed'], // 可以指定是原图还是压缩图，默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
            success: function(res) {
                console.info(logPrefix + " 获取轨迹截屏图片,已完成..")
                let picUrl = res.tempFilePaths[0]
                //将picUrl对应的图片转为base64字符串
                let base64Str = wx.getFileSystemManager().readFileSync(picUrl, "base64")
                that.setData({
                    photoBase64_track: base64Str
                })
            }
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})